package honor.exam;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;

/**
 * @author : Rookie
 * @description :
 * @date : 2023/8/25
 */
public class Circle {

    public static void main(String[] args) {
        // 设置方格的大小
        int n = 4;
        // 设置圆心的横坐标
        int x = 2;
        // 设置圆心的纵坐标
        int y = 3;
        // 设置半径
        int r = 2;
        List<Integer> arcNumbers = getArcNumbers(x, y, r, n);
        System.out.println(arcNumbers);
    }

    public static List<Integer> getArcNumbers(int x, int y, int r, int n) {
        List<Integer> arcNumbers = new ArrayList<>();
        // 遍历圆心所在的行和列
        for (int i = x - r; i <= x + r; i++) {
            for (int j = y - r; j <= y + r; j++) {
                // 判断圆心到当前方格的距离是否小于等于半径
                if (i >= 0 && i < n && j >= 0 && j < n && (i - x) * (i - x) + (j - y) * (j - y) <= r * r) {
                    // 如果是完全包含在圆内部的方格，则不添加到列表中
                    if (i == x || i == x + r || j == y || j == y + r) {
                        continue;
                    }
                    // 计算当前方格的编号，并添加到列表中
                    arcNumbers.add((i / n) * n + j);
                }
            }
        }
        return arcNumbers;
    }
}
